index.md (5352B)
1 +++ 2 title = 'Architecture design' 3 +++ 4 # Architecture design 5 ## Architecture design methods 6 How an architecture is developed: 7 8 ![Architecture design flowchart by Bosch](42d47395d53f4c7684f4123e6bcbe80b.png) 9 10 Architecture design in the context of other tasks 11 12 ![Architecture in context of other dev tasks by Hofmeister](380b44cc14444bb59b6d4d891d489f29.png) 13 14 ### Attribute-driven design 15 1. Choose element to design 16 - refinement: breadth first (figure out from high level all aspects) vs depth first (start with one aspect and go in detail) 17 - choice driven by: personnel availability, risk mitigation, priorities 18 2. Identify ASRs (can use e.g. utility tree) 19 3. Generate design solution, e.g. inspired by patterns and tactics 20 4. Verify and prepare for next iteration 21 5. Repeat steps 22 23 ![Generalized diagram of testing process](93f9279778fe4e70a343a6a526348792.png) 24 25 ![Diagram of process in terms of backlog](4b5dc70b99da495abcb2a2c384d0b441.png) 26 27 You choose from backlog by: 28 - focusing on revenue 29 - focusing on risk: 30 - identify fail scenarios (what if SHTF) and add cost×probability of fail scenarios 31 - cost of decision ≈ cost to undo that decision 32 33 ## Architecture design process 34 Design proceeds under conditions of great uncertainty: evolving requirements & limited info. 35 How rational are your design decisions? 36 37 Reflection-in-action: "thinking on your feet" 38 Reflection-on-action: retrospective reflection, thinking about what happened 39 40 Ultimate design is path through space of decisions. Choices at any point affect later (and maybe earlier) decisions. 41 42 Can we even make rational decisions? 43 - absolute rationality: logical chain of events+consequences, is time consuming 44 - bounded rationality: heuristics and rules of thumb, is time-efficient 45 - decisions are made in context, which is generally selected unconsciously and automatically 46 - anchoring is when you are given a set of possible choices, you stop 'thinking outside the box' 47 - social/cultural rationality: differences between people give new perspectives and solutions 48 49 Prospect theory & fourfold pattern: 50 - how people behave: 51 - high probability of getting a lot: don't take the risk (fear of disappointment) 52 - low probability of high loss: don't take the risk (fear of large loss) 53 - high probability of high loss: risk seeking (hope to avoid loss) 54 - low probability of high gain: risk seeking (hope of large gain) 55 - we fear losses more than we value gains 56 - influenced by diminishing sensitivity principle: value we perceive 'feels' different from actual worth 57 58 Design is a "wicked" problem. 59 There's no definite formulation, or stopping rule. 60 Solutions are not just true or false (I'll say this on the exam lol). 61 Decisions lead to new problems, to new decisions, to new problems, etc. 62 63 ## Architectural decisions 64 Design is series of decisions: 65 - sub-problems of overall design problem 66 - each issue has several design options 67 - designer makes a decision to resolve each issue (involves choosing 'best' option among alternatives) 68 69 ![Taking decisions flowchart](23eb8f7cbed047d6809b00fbe3d25822.png) 70 71 Design space: 72 - space of possible designs you can get by choosing different sets of alternatives 73 - is problem space + solution space 74 75 Technical and non-technical concerns/options are intertwined: architects decide on type of database, management decide on budget. 76 77 Types of decisions: 78 - implicit, undocumented (unaware, tacit, 'of course' knowledge) 79 - explicit, undocumented (vaporizes over time) 80 - explicit, explicitly undocumented (tactical, personal reasons) 81 - e.g. the streets in the Jordaan area of Amsterdam are angled differently than the rest of the city, because it used to be an area for poor people, and this made it harder for poor people to go into richer neighborhoods, as well as harder for rich people to see the poor neighborhoods 82 - explicit, documented (preferred and exceptional situation) 83 84 Design rationale: logical reasons given to justify designed artefact 85 - quantitative: 86 - priority: relative importance of design concern 87 - cost: dev effort, maintenance effort, potential legal liabilities 88 - benefit: how well an option satisfies requirements 89 - implementation risk: risk that team may not do successful design 90 - outcome certainty risk: risk that design may not satisfy requirements 91 - qualitative: 92 - design assumptions 93 - design constraints 94 - strengths and weaknesses 95 - trade-offs 96 97 Why document design decisions? 98 - prevents repeating past steps, which might be expensive 99 - explains why the architecture is good 100 - emphasizes qualities and criticality for requirements/goals 101 - provides context and background 102 103 Use of design decisions: 104 - identify key decisions for stakeholder 105 - evaluate impact for change 106 107 Template for modelling design decision: 108 - issue: what is it about? 109 - decision: which one? 110 - status: accepted/proposal/obsolete 111 - group: for grouping decisions with common characteristics 112 - assumptions: which are part of rationale? 113 - constraints: which are part of rationale? 114 - positions: alternatives, options to this decision 115 - argument: why this decision? 116 - implications: what are consequences of decision? 117 - relations: among this decision and others, or requirements/artifacts/principles 118 - importance: how important is this wrt quality? 119 - possible negative impact on quality attributes